//package com.hyzh.hj212.client;
//
//import io.netty.bootstrap.Bootstrap;
//import io.netty.buffer.ByteBuf;
//import io.netty.buffer.Unpooled;
//import io.netty.channel.ChannelFuture;
//import io.netty.channel.ChannelInitializer;
//import io.netty.channel.ChannelPipeline;
//import io.netty.channel.EventLoopGroup;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.SocketChannel;
//import io.netty.channel.socket.nio.NioSocketChannel;
//import io.netty.handler.codec.string.StringEncoder;
//
//import java.nio.charset.StandardCharsets;
//
//public class HJ212Client {
//
//    private final String host;
//    private final int port;
//
//    public HJ212Client(String host, int port) {
//        this.host = host;
//        this.port = port;
//    }
//
//    public void start() throws InterruptedException {
//        EventLoopGroup group = new NioEventLoopGroup();
//
//        try {
//            Bootstrap bootstrap = new Bootstrap();
//            bootstrap.group(group)
//                    .channel(NioSocketChannel.class)
//                    .handler(new ChannelInitializer<SocketChannel>() {
//                        @Override
//                        protected void initChannel(SocketChannel ch) {
//                            ChannelPipeline pipeline = ch.pipeline();
//                            pipeline.addLast(new StringEncoder(StandardCharsets.UTF_8)); // 对于简单测试，使用StringEncoder编码消息
//                            pipeline.addLast(new HJ212ClientHandler());
//                        }
//                    });
//
//            ChannelFuture future = bootstrap.connect(host, port).sync();
//            sendTestData(future);
//            future.channel().closeFuture().sync();
//        } finally {
//            group.shutdownGracefully();
//        }
//    }
//
//    private void sendTestData(ChannelFuture future) {
//        // 构造符合HJ 212-2017标准的数据包
//        String testData = "##0134ST=22;CN=2011;PW=123456;MN=88888880000001;CP=&&DataTime=20181216010101;001-Rtd=23.4,001-Flag=N;002-Rtd=24.5,002-Flag=N&&";
//
//        // 计算数据长度并添加报文头和校验码等
//        int length = testData.length();
//        String frame = "##" + String.format("%04d", length) + testData;
//
//        // 计算校验码
//        int crc = 0;
//        for (char c : frame.toCharArray()) {
//            crc += (int) c;
//        }
//        crc = crc & 0xFFFF; // 取低16位
//
//        frame += String.format("%04X", crc) + "\r\n";
//
//        System.out.println("Sending: " + frame);
//
//        // 发送数据
//        ByteBuf message = Unpooled.copiedBuffer(frame, StandardCharsets.UTF_8);
//        future.channel().writeAndFlush(message);
//    }
//
//    public static void main(String[] args) throws InterruptedException {
//        String host = "127.0.0.1"; // 服务器地址
//        int port = 28000; // 服务器端口号
//        new HJ212Client(host, port).start();
//    }
//}